package com.atguigu.view;

import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;

import java.util.Locale;

/**
 * 自定义的视图解析器
 *      1、实现ViewResolver接口
 *      2、实现Ordered接口，用于SpringMVC中的视图解析器排序
 *
 * @author 伟哥
 * @date 2021-05-15 18:58
 */
public class MyMeiNvViewResolver implements ViewResolver, Ordered {
    // 用于SpringMVC中的排序
    private Integer order;

    /**
     * 核心方法：
     *      根据视图名，返回视图对象
     * @param viewName
     * @param locale
     * @return
     * @throws Exception
     */
    @Override
    public View resolveViewName(String viewName, Locale locale) throws Exception {
        /*
        处理："meinv:"前缀的视图名，能返回就，返回视图名，
            解析不了，则返回null，让下一个视图解析器，解析
         */
        if (viewName.startsWith("meinv:")){

            return new MyView();
        }
        return null;
    }

    // 用于SpringMVC中的排序
    @Override
    public int getOrder() {
        return this.order;
    }

    // 改变视图解析器的优先级
    public void setOrder(Integer sequenceNumber){
        this.order = sequenceNumber;
    }
}
